<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        /*
      Map 和 Set 数据结构
        + ES6 新增的两种数据结构
        + 共同的特点: 不接受重复数据
    */

    /*
      Set 数据结构
        + 是一个 类似于 数组的数据结构
        + 按照索引排列的数据结构

      创建 Set 数据结构
        + 语法: var s = new Set([ 数据1, 数据2, 数据3, ... ])

      Set 数据结构的属性和方法
        1. size 属性
          => 语法: 数据结构.size
          => 得到: 该数据结构内有多少个数据
        2. add() 方法
          => 语法: 数据结构.add(数据)
          => 作用: 向该数据结构内添加数据
        3. has() 方法
          => 语法: 数据结构.has(数据)
          => 返回值: 一个布尔值
            -> true, 表示该数据结构内有该数据
            -> false, 表示该数据结构内没有该数据
        4. delete() 方法
          => 语法: 数据结构.delete(数据)
          => 作用: 删除该数据结构内的某一个数据
        5. clear() 方法
          => 语法: 数据结构.clear()
          => 作用: 清除该数据结构内所有数据
        6. forEach() 方法
          => 语法: 数据结构.forEach(function (value, key, origin) {})
    */


    var myset = new Set([1,2,1,1,2,2,1,2,2,2,22,4,4,5,6,7,7]);
    // console.log(myset)
    // console.log(myset.size)// 去重以后的个数  
    // console.log(myset)
    // myset.add('abc');
    // console.log(myset)
    // console.log(myset.has(3))
    // console.log(myset)
    // myset.delete(2);
    // console.log(myset)
    // myset.clear();
    // console.log(myset)
    // myset.forEach(function(item,index,origin){
    //     // console.log('元素',item);
    //     // console.log('索引',index);  //就是 数据本身  
    //     // console.log('元数据',origin);

    // })    


    /*
      Map 数据结构
        + 是一个类似于对象的数据结构, 但是他的 key 可以是任何数据类型
        + 可以被叫做一个 值=值 的数据结构

      创建一个 Map 数据结构
        + 语法: var m = new Map([ [ key, value ], [ key, value ] ])

      Map 数据结构的属性和方法
        1. size 属性
          => 语法: 数据结构.size
          => 得到: 该数据结构内有多少个数据
        2. set() 方法
          => 语法: 数据结构.set(key, value)
          // 键和值是对象  可以存进去  
          => 作用: 向该数据结构内添加数据
        3. get() 方法
          => 语法: 数据结构.get(key)
          // 如果键是对象或者数组  那么不能根据它进行取值  
          // 如果键是 字符串 等基本数据类型 
          => 返回值: 数据结构内该 key 对应的 value
        4. has() 方法
          => 语法: 数据结构.has(key)
          => 返回值: 一个布尔值
            -> true, 该数据结构内有该数据
            -> false, 该数据结构内没有该数据
            键必须是一个基本数据类型  尽量是字符串 
            // 
        5. delete() 方法
          => 语法: 数据结构.delete(key)
          => 作用: 删除该数据结构内的某一个数据
        6. clear() 方法
          => 语法: 数据结构.clear()
          => 作用: 清除该数据结构内所有数据
        7. forEach() 方法
          => 语法: 数据结构.forEach(function (value, key, origin) {})
    */


    var mymap = new Map([['name','张三'],['age',18],['height','181cm'],['name','李四']])
    // console.log(mymap)

    // mymap.set('sex','男')
    // console.log(mymap)
    // console.log(mymap.size)

    // console.log(mymap.get('name'))  // 李四

    // var obj = {
    //     name:'张三',
    //     age:18
    // }

    // console.log('name' in obj)// true

    // console.log(mymap.has('age'));
    // console.log(mymap.has('haha'));

    
    // console.log(mymap);
    // mymap.delete('age');
    // console.log(mymap)
    // mymap.clear()
    // console.log(mymap)
    // mymap.forEach(function(item,key,origin){
    //     console.log(item,key,origin) //值  键  源map
    // })





    </script>
</body>
</html>